package com.malou.server.ventas.marca;

import java.sql.SQLException;
import java.util.List;

import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.malou.client.ventas.marca.Marca;
import com.malou.server.base.Conexion;
import com.malou.server.base.util.GxtGridPaginate;

public class Marcas {
	private static SqlMapClient sqlMap = null;
	public static Integer errorTipo = 0;

	@SuppressWarnings("unchecked")
	public static PagingLoadResult<Marca> getPaginate(GxtGridPaginate paginate) {

		sqlMap = Conexion.getSqlMap();
		paginate.setLimit();
		if (paginate.order.equals("")) {
			paginate.order = " order by id desc";
		}
		List<Marca> data = null;
		try {
			data = sqlMap.queryForList("paginateMarca", paginate);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return new BasePagingLoadResult<Marca>(data, paginate.offset,
				count(paginate));
	}

	public static Integer count(GxtGridPaginate paginate) {
		Integer count = null;
		try {
			count = (Integer) sqlMap.queryForObject("countMarca", paginate);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return count;
	}

	public static boolean save(Marca tp) {
		boolean retorno = true;

		sqlMap = Conexion.getSqlMap();
		try {
			if (isValid(tp)) {
				if (tp.getId() != null)
					sqlMap.update("updateMarca", tp);
				else
					sqlMap.insert("insertMarca", tp);
			} else
				retorno = false;
		} catch (SQLException e) {
			retorno = false;
			e.printStackTrace();
		}
		return retorno;
	}

	public static boolean delete(Integer id) {
		boolean retorno = true;

		sqlMap = Conexion.getSqlMap();
		try {
			if (id != null)
				sqlMap.delete("deleteMarca", id);
			else
				retorno = false;
		} catch (SQLException e) {
			retorno = false;
			e.printStackTrace();
		}
		return retorno;
	}

	public static boolean deleteAll(String ids) {
		boolean retorno = true;

		sqlMap = Conexion.getSqlMap();
		try {
			if (!ids.equals(""))
				sqlMap.delete("deleteMarcas", ids);
			else
				retorno = false;
		} catch (SQLException e) {
			retorno = false;
			e.printStackTrace();
		}
		return retorno;
	}

	private static boolean isValid(Marca tp) {
		boolean retorno = true;
		Integer cant;
		try {
			if (tp.getDescripcion() != null) {
				cant = (Integer) sqlMap.queryForObject(
						"validaDescripcionMarca", tp);
				if (cant != 0) {
					errorTipo = 1; // Ya existe esta Marca;
					retorno = false;
				} else if (tp.getCodigo() != null) {
					cant = (Integer) sqlMap.queryForObject("validaCodigoMarca",
							tp);
					if (cant != 0) {
						errorTipo = 3; // Ya existe este codigo de tela;
						retorno = false;
					}
				}
			}
		} catch (SQLException e) {
			retorno = false;
			e.printStackTrace();
		}
		return retorno;
	}
	
	@SuppressWarnings("unchecked")
	public static List<Marca> getMarcas(){		
        SqlMapClient sqlMap = null;
		
		sqlMap = Conexion.getSqlMap();
		
        List<Marca> data = null;
		try {
			data = sqlMap.queryForList("ReportesgetMarcas", null);
//			if(data != null){
//				Marca empty = new Marca();
//			    empty.setDescripcion("Seleccionar...");
//			    data.add(empty);
//			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return data;
	}
}
